OpenSSL ব্যবহার করে Secure Socket Communication

Computer Programming - ইউনিক্স সকেট (Unix Socket) Secure Socket Layer (SSL) এবং TLS (Transport Layer Security) |
253
253

OpenSSL হলো একটি ওপেন-সোর্স লাইব্রেরি, যা SSL এবং TLS প্রোটোকল ব্যবহার করে নিরাপদ যোগাযোগ স্থাপন করতে সহায়ক। এটি সার্ভার এবং ক্লায়েন্ট উভয়ের জন্য Secure Socket Communication সেটআপ করার জন্য ব্যবহৃত হয়। OpenSSL ব্যবহার করে ক্লায়েন্ট-সার্ভার সংযোগ স্থাপন, ডেটা এনক্রিপ্ট করা, এবং সার্টিফিকেট ব্যবস্থাপনা করা যায়। নিচে OpenSSL ব্যবহার করে Secure Socket Communication সেটআপ এবং পরিচালনার ধাপগুলো নিয়ে আলোচনা করা হলো।

OpenSSL ইনস্টলেশন

OpenSSL সাধারণত Unix/Linux সিস্টেমে প্রি-ইনস্টলড থাকে। যদি এটি ইনস্টল না থাকে, তবে নিম্নলিখিত কমান্ডটি ব্যবহার করে এটি ইনস্টল করা যায়:

sudo apt-get update
sudo apt-get install openssl

Secure Socket Communication সেটআপের ধাপসমূহ

Secure Socket Communication সেটআপ করতে OpenSSL ব্যবহার করে প্রথমে সার্টিফিকেট এবং প্রাইভেট কী তৈরি করতে হবে। এরপর সার্ভার এবং ক্লায়েন্ট উভয়ের জন্য সিকিউর সিস্টেম কনফিগার করা যাবে।

ধাপ ১: সার্টিফিকেট এবং প্রাইভেট কী তৈরি করা

প্রাইভেট কী তৈরি করা:

  • প্রথমে একটি প্রাইভেট কী তৈরি করতে হবে, যা SSL/TLS যোগাযোগের সময় ব্যবহৃত হবে।
openssl genpkey -algorithm RSA -out server.key

সার্টিফিকেট সাইনিং রিকোয়েস্ট (CSR) তৈরি করা:

  • CSR তৈরি করতে হবে, যা সার্টিফিকেট অথরিটির কাছে পাঠিয়ে সার্টিফিকেট তৈরি করা যায়।
openssl req -new -key server.key -out server.csr

সার্টিফিকেট তৈরি করা (Self-Signed Certificate):

  • CSR ব্যবহার করে একটি Self-Signed সার্টিফিকেট তৈরি করা যায়, যা টেস্টিং এবং ডেভেলপমেন্টের জন্য ব্যবহৃত হয়।
  • server.key হলো প্রাইভেট কী, এবং server.crt হলো তৈরি করা সার্টিফিকেট।

ধাপ ২: Secure Socket Communication এর জন্য সার্ভার কোড লেখা (Python)

Python-এ OpenSSL ব্যবহার করে একটি Secure Socket Server তৈরি করতে নিচের কোডটি ব্যবহার করা যেতে পারে:

import socket
import ssl

# সার্ভার ঠিকানা এবং পোর্ট
server_address = ('localhost', 8443)

# SSL Context তৈরি করা
context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
context.load_cert_chain(certfile="server.crt", keyfile="server.key")

# TCP Socket তৈরি করা
bind_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
bind_socket.bind(server_address)
bind_socket.listen(5)

print("Secure Server is listening on port 8443...")

while True:
    # ক্লায়েন্ট সংযোগ গ্রহণ করা
    client_socket, client_address = bind_socket.accept()
    print(f"Connection accepted from {client_address}")

    # Secure Socket তৈরি করা
    secure_socket = context.wrap_socket(client_socket, server_side=True)

    try:
        # ক্লায়েন্ট থেকে ডেটা গ্রহণ করা
        data = secure_socket.recv(1024)
        print(f"Received: {data.decode()}")
        
        # ক্লায়েন্টকে মেসেজ পাঠানো
        secure_socket.sendall(b"Hello, Secure Client!")
    except Exception as e:
        print(f"Error: {e}")
    finally:
        secure_socket.close()
  • এখানে OpenSSL এর মাধ্যমে একটি SSL/TLS Context তৈরি করা হয়েছে এবং সার্টিফিকেট এবং প্রাইভেট কী লোড করা হয়েছে।
  • wrap_socket() ব্যবহার করে TCP Socket কে একটি Secure Socket-এ পরিবর্তিত করা হয়েছে।

ধাপ ৩: Secure Socket Communication এর জন্য ক্লায়েন্ট কোড লেখা (Python)

Python-এ OpenSSL ব্যবহার করে একটি Secure Socket Client তৈরি করতে নিচের কোডটি ব্যবহার করা যেতে পারে:

import socket
import ssl

# সার্ভার ঠিকানা এবং পোর্ট
server_address = ('localhost', 8443)

# SSL Context তৈরি করা
context = ssl.create_default_context()

# TCP সংযোগ তৈরি করা
client_socket = socket.create_connection(server_address)

# Secure Socket তৈরি করা
secure_socket = context.wrap_socket(client_socket, server_hostname='localhost')

try:
    # সার্ভারে ডেটা পাঠানো
    secure_socket.sendall(b"Hello, Secure Server!")

    # সার্ভার থেকে ডেটা গ্রহণ করা
    data = secure_socket.recv(1024)
    print(f"Received: {data.decode()}")
finally:
    secure_socket.close()
  • এখানে ক্লায়েন্ট একটি SSL Context তৈরি করে এবং সার্ভারের সাথে একটি সিকিউর সংযোগ স্থাপন করে।
  • wrap_socket() ব্যবহার করে TCP Socket কে SSL/TLS মোডে পরিবর্তিত করা হয়েছে, এবং সার্ভারের সনদ যাচাই করা হয়েছে।

ধাপ ৪: Secure Socket Communication পরীক্ষা করা

সার্ভার চালু করা:

  • সার্ভার কোডটি চালান:
python secure_server.py

ক্লায়েন্ট চালু করা:

  • ক্লায়েন্ট কোডটি চালান:
  • ক্লায়েন্ট সার্ভারের সাথে সংযোগ স্থাপন করবে এবং ডেটা পাঠাবে ও গ্রহণ করবে।
python secure_client.py

Secure Socket Communication-এর সুবিধা

ডেটা এনক্রিপশন এবং গোপনীয়তা:

  • OpenSSL SSL/TLS প্রোটোকল ব্যবহার করে ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা এনক্রিপ্ট করে। এটি নিশ্চিত করে যে ডেটা গোপন এবং নিরাপদ থাকে এবং তৃতীয় পক্ষ দ্বারা ইন্টারসেপ্ট করা যায় না।

সার্টিফিকেট যাচাই এবং প্রমাণীকরণ:

  • সার্ভার একটি সার্টিফিকেট প্রদান করে, যা ক্লায়েন্ট যাচাই করে। এটি নিশ্চিত করে যে সংযোগটি একটি বৈধ এবং নিরাপদ সার্ভারের সাথে স্থাপন করা হয়েছে।

ডেটার ইন্টেগ্রিটি রক্ষা:

  • SSL/TLS প্রোটোকল ডেটার ইন্টেগ্রিটি নিশ্চিত করে, যাতে ডেটা প্রেরণ এবং গ্রহণের সময় তা পরিবর্তিত না হয়।
common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion